package com.qumitech.visualnovel.service.novel;

import java.util.*;
import com.alibaba.fastjson.*;
import javax.servlet.http.HttpServletRequest;
import com.qumitech.visualnovel.model.common.BaseResponse;
import com.qumitech.visualnovel.model.dto.*;

public interface BookService {
    BaseResponse update(List<BookUpdateDTO> body);

    BaseResponse getBookRating(Long bookId);

    BaseResponse updateBookRating(BookRatingDTO body);

    BaseResponse list(BookQueryDTO param);

    BaseResponse preview(BookPreviewDTO param);

    BaseResponse addBookRecommend(BookRecommendAddDTO body);

    BaseResponse delBookRecommend(Long id);

    BaseResponse updateBookRecommend(Long id, BookRecommendAddDTO body);

    BaseResponse getBookRecommend(BookRecommendQueryDTO param);

    BaseResponse getBookNameOption(List<String> publishStates, String category);

    BaseResponse getBookComment(BookCommentQueryDTO param);

    BaseResponse textNovelImport(HttpServletRequest request);

    BaseResponse textNovelOnline(Boolean ifOnline, List<Long> bookIdList);

    BaseResponse getChapterFrames(Long chapterId);

    BaseResponse updateChapterFrames(Long chapterId, List<BookFrameUpdateDTO> body);

    BaseResponse addBookClissfyConf(BookClissfyConfDTO body);

    BaseResponse delBookClissfyConf(Long classifyId);

    BaseResponse updateBookClissfyConf(List<BookClissfyConfUpdateDTO> body);

    BaseResponse getBookClissfyRecord(Boolean ifRecommend,Integer classifyType);

    BaseResponse addBookClissfyRecord(Long classifyId, List<BookClissfyRecordAddDTO> body);

    BaseResponse updateBookClissfyRecordOrder(List<BookClissfyRecordUpdateDTO> body);

    BaseResponse delBookClissfyRecord(Long recordId);

    BaseResponse getBookStatisticList(BookStatisticQueryDTO param);

    JSONObject getBookStatisticListV2(String startTime, String endTime, String geoName, String channel, String bookTitle, List<Integer> bookIds, Integer offset, Integer limit);

    JSONObject getChapterStatisticList(String startTime, String endTime, String geoName, String channel, String bookTitle, List<Integer> bookIds, Integer chapterIndex, Integer offset, Integer limit);

    JSONObject getOptionStatisticList(String startTime, String endTime, String geoName, String channel, String bookTitle, List<Integer> bookIds, Integer chapterIndex, Integer offset, Integer limit);
}
